using System;
using System.ServiceModel;
using RPGOnline.Remoting.Entities;

namespace RPGOnline.Remoting
{
    public interface IChatCallback
    {
        [OperationContract(IsOneWay = true)]
        void RegistrationCompleted();
        [OperationContract(IsOneWay = true)]
        void RegistrationFailed();

        [OperationContract(IsOneWay = true)]
        void NewUserConnected(User user);
        [OperationContract(IsOneWay = true)]
        void UserDisconnected(User user);
        [OperationContract(IsOneWay = true)]
        void MessageReceived(User user, Guid chatGroupId, string message);
        [OperationContract(IsOneWay = true)]
        void UpdatedSession(SessionContext sessionContext);
        [OperationContract(IsOneWay = true)]
        void PrivateMessageReceived(User senderUser, User destinationUser, string message);
        [OperationContract(IsOneWay = true)]
        void NewGroupCreated(ChatGroup chatGroup);
        [OperationContract(IsOneWay = true)]
        void UserMovedToGroup(User user, Guid groupId);
        [OperationContract(IsOneWay = true)]
        void UserRolled(User user, RollResult rollResult);
        [OperationContract(IsOneWay = true)]
        void UserInfoChanged(User user);
    }
}